# 按关键词识别文本内容
# 将"项目号：ABC123"之类的内容按照定义的关键词识别出来，
# 并返回{"key":"关键词之key", "value":"关键词对应的内容"}键值对
# by lw 2023-11-5

import re

# 内容识别使用的关键词字典数组：
content_key_dicts = [{
    'word': '项目号',
    'key': 'project_id'
}, {
    'word': '采购执行编号',
    'key': 'buy_number'
}, {
    'word': '采购方式',
    'key': 'buy_method'
}, {
    'word': '项目名称',
    'key': 'project_name'
}, {
    'word': '中标（成交）信息',
    'key': 'dealinfo'
}, {
    'word': '采购结果',
    'key': 'dealinfo'
}, {
    'word': '包号',
    'key': 'package'
}, {
    'word': '合同包',
    'key': 'package'
}, {
    'word': '采购单位',
    'key': 'punit'
}, {
    'word': '采购单位地址',
    'key': 'punit_address'
}, {
    'word': '供应商名称',
    'key': 'cunit'
}, {
    'word': '供应商地址',
    'key': 'cunit_address'
}, {
    'word': '中标（成交）金额',
    'key': 'deal_amount'
}]


# 识别内容：
def identify(s: str, pattern: re = r'[：:\s]') -> {}:
    """按关键词识别文本内容
    Args:
        s (str): 要识别的的字符串
        pattern (re):使用的正则表达式，默认值为：识别冒号
    Returns:
        _type_: {"key":"关键词之key", "value":"关键词对应的内容"}
    """
    ss = re.split(pattern, s, 1)
    if ss == None:
        return None
    for d in content_key_dicts:
        if d['word'] == ss[0]:
            return {'key': d['key'], 'value': ss[1]}
    return None
